package com.tul.exercise.base.jmockit.atInjectable;

import com.tul.exercise.base.jmockit.atMocked.ToBeMocked;
import mockit.Injectable;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertTrue;

/**
 * 测试 @Mocked 用法
 *
 * @Injectable作用于测试用例参数
 * 该用例参数中被注解的类型将处于mock状态
 * 被mocked的类所有非private方法都将处于mocked状态,被mocked的方法默认返回值null
 *
 */
// 可以省略 @RunWith(JMockit.class)
//@RunWith(JMockit.class)
public class MockedAndInjectableTest {

    @Test
    public void test1(@Injectable final ToBeMocked instance) {
        // 方法fun 被mock，默认返回值为null
        System.out.println(instance.fun());
        assertTrue(instance.fun() == null);

    }
    @Test
    public void test2() {
        ToBeMocked instance  = new ToBeMocked();

        // 方法fun 被mock，默认返回值为null
        System.out.println(instance.fun());
        assertTrue(instance.fun() != null);

    }

}
